﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Demo01
    {
        //1、定义一个方法，求一个整数数组中的最大值，最小值，和，平均数。
        //如果是一个方法只能有一个返回值，那只能每一个都得定义一个方法来实现，
        //不过有了ref和out这实现起来就方便多了。

        //        参考步骤：
        //定义一个一维数组，数组中存放一些数据（控制台输入）。
        //定义几个变量：max、min、sum、avg

        //定义一个方法，方法返回数组元素之和,方法形参有max min avg。

        //请用ref和out各做一遍，并在注释中，描述他们的区别。
        public double[] RefGetSum(int[] arr, ref int sum, ref int max, ref int min, ref double avg)
        {
            for (int i = 0; i < arr.Length; i++)
            {
                sum = arr[i] + sum;

                if (max < arr[i])
                {
                    max = arr[i];
                }

                if (min > arr[i])
                {
                    min = arr[i];
                }
            }

            avg = sum * 1.0 / arr.Length;

            double[] array = { sum, max, min, avg };
            return array;
        }

        internal double[] OutGetSum(int[] arr, out int sum, out int max, out int min, out double avg)
        {
            sum = 0;
            max = arr[0];
            min = arr[0];
            avg = 0;
            for (int i = 0; i < arr.Length; i++)
            {
                sum = arr[i] + sum;

                if (max < arr[i])
                {
                    max = arr[i];
                }

                if (min > arr[i])
                {
                    min = arr[i];
                }
            }

            avg = sum * 1.0 / arr.Length;

            double[] array = { sum, max, min, avg };

            return array;
        }
    }
}
